ISPELL
Section: Devices and Network Interfaces (4)
Index
Return to Main Contents
NAME
ispell - format of ispell dictionaries
DESCRIPTION
Dictionaries for
ispell(1)
come in two formats:
raw, and unhashed.
The hashed dictionary is generated by
buildhash
(see
ispell(1))
from the raw dictionary, and is not described here.
A raw
ispell
dictionary (either the main dictionary or your own personal
dictionary) contains a list of words, one per line.
Each word may optionally be followed by a slash ("/") and one or more
flags, which modify the root word as explained below.
Case is significant in the root word, but ignored in the flags.
The dictionary does not need to be sorted.
The case of the root word controls the case of words accepted by
ispell,
as follows:
- (1)
-
If the root word appears only in lower case (e.g., "bob"),
it will be accepted in lower case, capitalized, or all capitals.
- (2)
-
If the root word appears capitalized (e.g., "Robert"), it will be not
be accepted in
all-lower case, but will be accepted capitalized or all in capitals.
- (3)
-
If the root word appears all in capitals (e.g., "UNIX"),
it will only be accepted all in capitals.
- (4)
-
If the root word appears with a "funny" capitalization (e.g., "ITCorp"),
a word will be accepted only if it follows that capitalization, or if
it appears all in capitals.
- (5)
-
More than one capitalization of a root word may appear in the dictionary.
Flags from different capitalizations are combined by OR-ing them together.
Redundant capitalizations (e.g., "bob" and "Bob") will be combined
by
buildhash
and by
ispell
(for personal dictionaries),
and can be removed from a raw dictionary by
munchlist.
For example, the dictionary:
-
bob
Robert
UNIX
ITcorp
ITCorp
will accept "bob," "Bob," "BOB," "Robert," "ROBERT," "UNIX," "ITcorp,"
"ITCorp," and "ITCORP," and will reject all others.
Some of the unacceptable forms are "bOb," "robert," "Unix," and "ItCorp."
As mentioned above, root words in any dictionary may be extended by flags.
Each flag is a single alphabetic character, which represents a suffix
that may be added to the root to form a new word.
For example, the "D" flag can be added to "bathe" to make "bathed".
Since flags are represented as a single bit in the hashed dictionary, this
results in significant space savings.
The
munchlist
script will reduce an existing raw dictionary by adding flags when possible.
When a word is extended with a suffix, the suffix will be accepted only
if it appears in the same case
as the final letter of the word.
Thus, for example, the entry "UNIX/M" in the main dictionary ("M" means
add an apostrophe and an "s" to make a possessive) would accept "UNIX'S"
but would reject "UNIX's".
If "UNIX's" is legal, it must appear as a separate dictionary entry,
and it will not be combined by
munchlist.
In the following discussion of the flags,
let # and @ be "variables" that can stand for any letter.
Upper case letters are constants.
"..." stands for any string of zero or more
letters, but note that no word may exist in the dictionary which is not at
least 2 letters long, so, for example, "fly" may not be produced by placing
the "Y" flag on "f".
Also, no flag is effective unless the word that it
creates is at least 4 letters long, so, for example, "wed" may not be
produced by placing the "D" flag on "we".
The meaning of the flags is as follows:
- V
-
...e --> ...ive as in create --> creative
if # .ne. e, ...# --> ...#ive as in prevent --> preventive
- N
-
...e --> ...ion as in create --> creation
...y --> ...ication as in multiply --> multiplication
if # .ne. e or y, ...# --> ...#en as in fall --> fallen
- X
-
...e --> ...ions as in create --> creations
...y --> ...ications as in multiply --> multiplications
if # .ne. e or y, ...# --> ...#ens as in weak --> weakens
- H
-
...y --> ...ieth as in twenty --> twentieth
if # .ne. y, ...# --> ...#th as in hundred --> hundredth
- Y
-
... --> ...ly as in quick --> quickly
- G
-
...e --> ...ing as in file --> filing
if # .ne. e, ...# --> ...#ing as in cross --> crossing
- J
-
...e --> ...ings as in file --> filings
if # .ne. e, ...# --> ...#ings as in cross --> crossings
- D
-
...e --> ...ed as in create --> created
if @ .ne. a, e, i, o, or u,
...@y --> ...@ied as in imply --> implied
if # .ne. e or y, or (# = y and @ = a, e, i, o, or u)
...@# --> ...@#ed as in cross --> crossed
or convey --> conveyed
- T
-
...e --> ...est as in late --> latest
if @ .ne. a, e, i, o, or u,
...@y --> ...@iest as in dirty --> dirtiest
if # .ne. e or y, or (# = y and @ = a, e, i, o, or u)
...@# --> ...@#est as in small --> smallest
or gray --> grayest
- R
-
...e --> ...er as in skate --> skater
if @ .ne. a, e, i, o, or u,
...@y --> ...@ier as in multiply --> multiplier
if # .ne. e or y, or (# = y and @ = a, e, i, o, or u)
...@# --> ...@#er as in build --> builder
or convey --> conveyer
- Z
-
...e --> ...ers as in skate --> skaters
if @ .ne. a, e, i, o, or u,
...@y --> ...@iers as in multiply --> multipliers
if # .ne. e or y, or (# = y and @ = a, e, i, o, or u)
...@# --> ...@#ers as in build --> builders
or slay --> slayers
- S
-
if @ .ne. a, e, i, o, or u,
...@y --> ...@ies as in imply --> implies
if # .eq. s, x, z, or h,
...# --> ...#es as in fix --> fixes
if # .ne. s, x, z, h, or y, or (# = y and @ = a, e, i, o, or u)
...@# --> ...@#s as in bat --> bats
or convey --> conveys
- P
-
if @ .ne. a, e, i, o, or u,
...@y --> ...@iness as in cloudy --> cloudiness
if # .ne. y, or @ = a, e, i, o, or u,
...@# --> ...@#ness as in late --> lateness
or gray --> grayness
- M
-
... --> ...'s as in dog --> dog's
To summarize more briefly:
-
V - ive
N - ion, tion, en
X - ions, ications, ens
H - th, ieth
Y - ly
G - ing
J - ings
D - ed
T - est
R - er
Z - ers
S - s, es, ies
P - ness, iness
M - 's
SEE ALSO
ispell(1)
Index
- NAME
-
- DESCRIPTION
-
- SEE ALSO
-
This document was created by
man2html,
using the manual pages.
Time: 16:12:16 GMT, September 10, 2022